Xm-tests 01_memset_basic_pos.test and 03_memset_random_pos.test start
authoremellor@leeni.uk.xensource.com <emellor@leeni.uk.xensource.com>
Tue, 2 May 2006 17:17:59 +0000 (18:17 +0100)
committeremellor@leeni.uk.xensource.com <emellor@leeni.uk.xensource.com>
Tue, 2 May 2006 17:17:59 +0000 (18:17 +0100)
domUs with 64MB of memory,
and assume that all of that memory is available in the domU. They then
perform various xm memset tests
based on the assumed starting conditions.

When netback & blkback are comiled into the domU kernel, they eat about
5MB. This mismatch will cause
01_memset_basic_pos.test to fail every time. 03_memset_random_pos.test
will probably fail, but can
pass with some lucky numbers from the random number generator.

This patch changes both tests to read the starting memory allocation from
the balloon driver in the domU.

Signed-off-by: Jim Dykman <dykman@us.ibm.com>
tools/xm-test/tests/memset/01_memset_basic_pos.py
tools/xm-test/tests/memset/03_memset_random_pos.py

index 58e65966ac415b85081598c7fa7b87cb9745bc5c..376ec8280921ef7495b5193e16155ffbe4a37989 100644 (file)
@@ -44,8 +44,20 @@ try:
 except ConsoleError, e:
     FAIL(str(e))
     
+try:
+    run = console.runCmd("cat /proc/xen/balloon | grep Current");
+except ConsoleError, e:
+    FAIL(str(e))
+
+match = re.match("[^0-9]+([0-9]+)", run["output"])
+if not match:
+    FAIL("Invalid domU meminfo line")
+        
+origmem = int(match.group(1)) / 1024
+newmem = origmem - 1
+
 # set mem-set for less than default
-cmd = "xm mem-set %s %i" % (domain.getName(), 63)
+cmd = "xm mem-set %s %i" % (domain.getName(), newmem)
 status, output = traceCommand(cmd)
 if status != 0:
     if verbose:
@@ -55,7 +67,7 @@ if status != 0:
 
 for i in [1,2,3,4,5,6,7,8,9,10]:
     mem = getDomMem(domain.getName())
-    if mem == 63:
+    if mem == newmem:
         break
     time.sleep(1)
 
@@ -63,8 +75,8 @@ for i in [1,2,3,4,5,6,7,8,9,10]:
 mem = getDomMem(domain.getName())
 if not mem:
     FAIL("Failed to get memory amount for domain %s" % domain.getName())
-elif mem != 63:
-    FAIL("Dom0 failed to verify 63 MB; got %i MB" % mem)
+elif mem != newmem:
+    FAIL("Dom0 failed to verify %i MB; got %i MB" % newmem,mem)
 
 # verify memory set internally
 try:
@@ -79,7 +91,7 @@ if not m:
 
 domUmem = int(m.group(1)) / 1024
 
-if domUmem != 63:
+if domUmem != newmem:
     FAIL("DomU reported incorrect memory amount: %i MB" % (domUmem))
 
 # quiesce everything
index 3f382938ffc6dc2b06fc890f420887c8a2621268..bb78c90cee157aeb80c5e7059200730a116eacdc 100644 (file)
@@ -22,8 +22,6 @@ except DomainError, e:
     FAIL(str(e))
 
 times = random.randint(10,50)
-origmem = domain.config.getOpt("memory")
-currmem = domain.config.getOpt("memory")
 
 try:
     console = XmConsole(domain.getName())
@@ -31,6 +29,18 @@ try:
 except ConsoleError, e:
     FAIL(str(e))
 
+try:
+    run = console.runCmd("cat /proc/xen/balloon | grep Current");
+except ConsoleError, e:
+    FAIL(str(e))
+
+match = re.match("[^0-9]+([0-9]+)", run["output"])
+if not match:
+    FAIL("Invalid domU meminfo line")
+        
+origmem = int(match.group(1)) / 1024
+currmem = origmem
+
 for i in range(0,times):
     amt = random.randint(-10,10)